"""
812. 最大三角形面积
简单
相关标签
premium lock icon
相关企业
给你一个由 X-Y 平面上的点组成的数组 points ，其中 points[i] = [xi, yi] 。从其中取任意三个不同的点组成三角形，返回能组成的最大三角形的面积。与真实值误差在 10-5 内的答案将会视为正确答案。



示例 1：


输入：points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出：2.00000
解释：输入中的 5 个点如上图所示，红色的三角形面积最大。
示例 2：

输入：points = [[1,0],[0,0],[0,1]]
输出：0.50000


提示：

3 <= points.length <= 50
-50 <= xi, yi <= 50
给出的所有点 互不相同
"""
from typing import List


class Solution:
    def largestTriangleArea(self, points: List[List[int]]) -> float:
        def triangle_area(a, b, c):
            # 使用海伦公式计算三角形面积

            def distance(p1, p2):
                return ((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2) ** 0.5

            ab = distance(a, b)
            bc = distance(b, c)
            ac = distance(a, c)

            s = (ab + bc + ac) / 2
            area = abs(s * (s - ab) * (s - bc) * (s - ac)) ** 0.5
            return area
        ans = 0
        len1 = len(points)
        for i in range(len1):
            for j in range(i+1,len1):
                for z in range(j+1,len1):
                    ans = max(ans, triangle_area(points[i],points[j],points[z]))
        return ans
if __name__ == '__main__':
    print(Solution().largestTriangleArea([[2,5],[7,7],[10,8],[10,10],[1,1]]))